He visto ambos x || [] y x ?? [] utilizado para proporcionar un valor alternativo si x es nulo. ¿Hay casos en los que estos dos dan resultados diferentes?
Si x fuera un valor falso no nulo, sería diferente.
x = 0; x = x ?? [] console.log(x); y = null; y = y ?? [] console.log(y);Estas expresiones x || [] y x ?? [] son asignaciones lógicas en Javascript.
x ?? [] se usa para representar casos nulos o indefinidos , mientras que x || [] representan true si a o b es true .
x ?? [] funciona evaluando si el lado izquierdo de la expresión es nulo o indefinido.
x || [] funciona evaluando si a o b es true . Si a es verdadero, continúe en la declaración if. Si b es verdadera, continúa en la declaración if.
Hacen cosas diferentes.
?? se denomina operador coalescente nulo https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
Y funciona comprobando si el lado izquierdo de la evaluación es nulo o indefinido y si no es el caso asignará el lado derecho de la evaluación.
Lo anterior es realmente útil cuando estás comprobando una variable con el valor zero , que será falso si lo estás comprobando.
|| es el operador lógico https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR
El logical operator funciona como cualquier otro operador lógico. Evaluará el lado izquierdo y luego el lado derecho
null || 1 // output 1 undefined || 1 // output 1 0 || 1 // 1 <-- there are cases where you want to treat zero as a truthy value and **that's where the nullish operator is handy**